﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics.Contracts;
using System.Collections;
using NUnit.Framework;
using EnumUtils;
using EnumUtils.Extensions;
using EnumUtilsTests.TestingEnums;

namespace EnumUtilsTests.Extensions
{
  [TestFixture]
  public class FlagEnumExtensionsTests
  {
    #region Setup and Teardown
    #endregion



    #region BitSheftLeft Tests
    [Test]
    [ExpectedException(typeof(ArgumentException))]
    public void
    BitShiftLeftUsingRegularEnumTest( ) {
      Enum regularEnum = RegularEnum.f1;
      regularEnum.BitShiftLeft(3);
      Assert.Fail("Passing a regular enum should have failed, but it didn't");
//LEFT_OFF_HERE: Add a case where a Flag enum is used
    }


    [Test]
    public void
    BitShiftLeftUsingFlagsEnumTest( ) {
      Enum flagEnum = GoodFlagEnum.f4;
      flagEnum.BitShiftLeft(3);
        // Result: flagEnum == GoodFlagEnum.f4
      Assert.AreEqual(GoodFlagEnum.f4, flagEnum);
    }
    #endregion



    #region BitShiftRight Tests
    [Test]
    [Ignore("Test not yet written.")]
    public void
    BitShiftRightTest( ) {
      throw new NotImplementedException();
    } 
    #endregion
  }
}
